package georeduy.clases;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;


import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;


@Entity
public class Evento implements Serializable
{
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY )
	@Column(name="ID" ,nullable=false )
	private Integer id;
	
	private String nombre;
	private String descripcion;
	private Date comienzo;
	private Date fin;
	@OneToOne(cascade = CascadeType.ALL) private Imagen imagen;
	private String latitud;
	private String longitud;
	private SitioInteres sitio;
	
	@ElementCollection
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<String> categorias;

	public Evento() {
		super();
	}

	public Evento(String nombre, String descripcion, Date comienzo, Date fin,
			List<String> categorias, Imagen imagen, String latitud, String longitud, SitioInteres sitio) 
	{
		super();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.comienzo = comienzo;
		this.fin = fin;
		this.categorias = categorias;
		this.imagen = imagen;
		this.latitud = latitud;
		this.longitud = longitud;
		this.setSitio(sitio);
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Date getComienzo() {
		return comienzo;
	}

	public void setComienzo(Date comienzo) {
		this.comienzo = comienzo;
	}

	public Date getFin() {
		return fin;
	}

	public void setFin(Date fin) {
		this.fin = fin;
	}

	public List<String> getCategorias() {
		return categorias;
	}

	public void setCategorias(List<String> categorias) {
		this.categorias = categorias;
	}

	public Imagen getImagen() {
		return imagen;
	}

	public void setImagen(Imagen imagen) {
		this.imagen = imagen;
	}

	public String getLatitud() {
		return latitud;
	}

	public void setLatitud(String latitud) {
		this.latitud = latitud;
	}

	public String getLongitud() {
		return longitud;
	}

	public void setLongitud(String longitud) {
		this.longitud = longitud;
	}

	public SitioInteres getSitio() {
		return sitio;
	}

	public void setSitio(SitioInteres sitio) {
		this.sitio = sitio;
	}
}
